package 双指针;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName 长度最小的子数组.java
 * @Description TODO
 * @createTime 2020年10月18日 16:04:00
 * 给定一个含有 n 个正整数的数组和一个正整数 s ，找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组，并返回其长度。如果不存在符合条件的子数组，返回 0。
 *
 *  
 *
 * 示例：
 *
 * 输入：s = 7, nums = [2,3,1,2,4,3]
 * 输出：2
 * 解释：子数组 [4,3] 是该条件下的长度最小的子数组。
 *
 * 思路：动态窗口  每次记录最小的窗口  每次往右推移检测当窗口左移是否满足条件 若满足则左移到不满足
 *
 * 动态窗口问题关键是 什么时候扩展窗口 什么时候缩小窗口 可以通过窗口携带什么数据
 */
public class 长度最小的子数组 {
    public static void main(String[] args) {
//        public int minSubArrayLen(int s, int[] nums) {
//
//            if (nums.length == 0) {
//                return 0;
//            }
//            int min=Integer.MAX_VALUE,sum=0;
//            int left=0,right=0;
//
//            for(;right<nums.length;right++){
//                sum+=nums[right];
//                while(sum>=s){
//                    min=Math.min(min,right-left+1);
//                    sum-=nums[left];
//                    left++;
//                }
//
//            }
//
//            if(min==Integer.MAX_VALUE){
//                return 0;
//            }else{
//                return min;
//            }
    }
}
